package com.ning.farm_income_back.vo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/*
    自定义的统一的返回集
     Lombok注解作用
 */
@Data //自动生成getter/setter/toString等
@NoArgsConstructor // 生成无参构造器
@AllArgsConstructor //生成全参构造器
public class ResultVo<T> {
    private Integer code;    // 状态码（200=成功，500=失败...）
    private String message;  // 提示信息
    private T data;          // 返回的业务数据（泛型）

    // ---------------------- 快速构建方法 ----------------------

    /**
     * 成功响应（无数据）
     */
    public static <T> ResultVo<T> success(String message) {
        return new ResultVo<>(200, message, null);
    }

    /**
     * 成功响应（带数据）
     */
    public static <T> ResultVo<T> success(String message,T data) {
        return new ResultVo<>(200, message, data);
    }

    /**
     * 失败响应
     */
    public static <T> ResultVo<T> error(Integer code, String message) {
        return new ResultVo<>(code, message, null);
    }

    /**
     * 默认失败响应（code=500）
     */
    public static <T> ResultVo<T> error(String message) {
        return new ResultVo<>(500, message,null);
    }

    /**
     * 默认失败响应（code=500）
     */
    public static <T> ResultVo<T> reject(String message) {
        return new ResultVo<>(400, message,null);
    }
}
